/**
 *公共数据
 * Created by wanglong on 2021/06/23
 */
import { initGlobalState } from "qiankun";
import store from "../store/index";
import router from "../router/index";
import Vue from "vue";
// 传入子应用的公共数据
export const props = {
  data: {
    publicPath: process.env.BASE_URL,
    store,
    router,
  },
};
/**
 * 定义全局状态，并返回通信方法,在主应用使用，微应用通过 props 获取通信方法。
 * @param state 主应用传的公共数据
 */
export function initGlState(info = { userName: "admin" }) {
  // 初始化state
  const actions = initGlobalState(info);
  // 设置新的值
  actions.setGlobalState(info);
  // 注册 观察者 函数 - 响应 globalState 变化，在 globalState 发生改变时触发该 观察者 函数。
  actions.onGlobalStateChange((newState, prev) => {
    console.log("globalBack  ---  ok" + prev);
    // state: 变更后的状态; prev 变更前的状态
    store.dispatch("setUserInfo", newState);
  });
  // 将action对象绑到Vue原型上
  Vue.prototype.$actions = actions;
}
